Play framework 2.0 betaが出たようです5 – Applicationのグローバル設定
Applicationのグローバル設定
前回はControllerとRoutingについてご紹介しました。今回はアプリケーション全体で適用されるグローバル設定についてご紹介します。 Globalオブジェクトを定義すると、アプリケーション全体の設定を処理することが可能です。 このオブジェクトは、_root_パッケージで定義されている必要があります。
import play.api._ object Global extends GlobalSettings { }
GlobelオブジェクトはGlobalSettingsトレイトをmixinします。このあとGlobalSettingsのいくつかのメソッドについて解説していきます。
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.2
- Playframework : 2.0β
- Java : 1.6.0_26
注意: この記事ではβ版を使用しています。 正式リリース前の状況のため思わぬ不具合が生じるかもしれませんので、ご了承ください。
アプリケーションの開始、終了イベントをハンドリングする
OnStartメソッドとOnStopをオーバーライドすれば、アプリケーションの開始時と終了時に処理が可能です。
import play.api._ object Global extends GlobalSettings { override def onStart(app: Application) { Logger.info("Application has started") } override def onStop(app: Application) { Logger.info("Application shutdown...") } }
このobjectをアプリケーションのルートパッケージにおいて、アプリケーションを起動してみてください。 アプリケーション起動時(DEVモードでは初回アクセス時)にonStart、ctrl + dでアプリケーションの終了時にonStopが実行されます。
エラーページを提供する
アプリケーションで例外が発生した場合、onErrorメソッドが呼び出されます。 デフォルトでは、あらかじめフレームワークで用意されたエラーページが表示されます。 先ほど作成したGlobalオブジェクトにonErrorメソッドを追加します。
override def onError(request: RequestHeader, ex: Throwable) = { Logger.error("this is Error!!!!") InternalServerError( views.html.errorPage(ex)) }
onErrorではerrorPageへ処理を渡しているので、app/viewsディレクトリにerrorPage.scala.htmlを作成し、下記の内容を記述します。
@(ex: Throwable) @main("Error") { Error! }
Controllerでわざと例外を発生させて試してみてください。onErrorが実行され、errorPage.scala.htmlが表示されます。 また、Actionがみつからなかった場合に発生するonActionNotFoundや、routeがみつからなかった場合のonBadRequestもあるので、必要に応じてoverrideしてください。
まとめ
今回はアプリケーション全体の処理についてご紹介しました。 Globalオブジェクトを使用すれば、例外処理などはここで一元管理できそうですね。